<?php

class Opciones_sistema_Model extends CI_Model {

    function __construct() {
        parent::__construct();
    }
    
    /**
     * Método que nos devuelve todas las opciones del sistema.
     * @author Andrés Guizado Díaz
     */

    function getOpcionesSistema(){
    	$opciones = $this->db->get('opciones_sistema');
    	return $opciones->result();
    }

    function getPorid($id){
    	$porid = $this->db->query('select *
            from opciones_sistema
            where id_opciones_sistema = ' . $id);
    	return $porid->result();
    }
    
    function getOpcPadres($id){
    	$query = $this->db->query('SELECT DISTINCT padre.nombre AS p
FROM opciones_sistema hijo, opciones_sistema padre, opciones_sistema_perfil, usuario_perfil, usuario
WHERE hijo.id_opciones_sistema = opciones_sistema_perfil.id_opciones_sistema AND
hijo.id_padre IS NOT NULL AND
hijo.id_padre = padre.id_opciones_sistema AND
usuario.id_usuario = usuario_perfil.id_usuario AND
usuario_perfil.id_perfil = opciones_sistema_perfil.id_perfil AND
usuario_perfil.id_estado = 2 AND
usuario.id_usuario = ' . $id);
    	return $query->result();
    }
    
    function getOpcionesPerfil($id){
    	$query = $this->db->query('SELECT DISTINCT hijo.nombre AS o, hijo.url AS u, padre.nombre AS p
FROM opciones_sistema hijo, opciones_sistema padre, opciones_sistema_perfil, usuario_perfil, usuario
WHERE hijo.id_opciones_sistema = opciones_sistema_perfil.id_opciones_sistema AND
hijo.id_padre IS NOT NULL AND
hijo.id_padre = padre.id_opciones_sistema AND
usuario.id_usuario = usuario_perfil.id_usuario AND
usuario_perfil.id_perfil = opciones_sistema_perfil.id_perfil AND
usuario_perfil.id_estado = 2 AND
opciones_sistema_perfil.id_estado = 2 AND
usuario.id_usuario = ' . $id);
    	return $query->result();
    }    

    function insert($data){
    	$this->db->set('nombre', $data['nombre']);
    	$this->db->set('fecha_registro', $data['fecha']);
    	$this->db->set('id_estado', $data['estado']);
    	$this->db->set('url', $data['ruta']);
    	$this->db->set('usuario_registro', $data['usuario_registro']);
    	$this->db->insert('opciones_sistema');
    }

    function update($data) {
    	$this->db->set('nombre', $data['nombre']);
    	$this->db->set('id_estado', $data['estado']);
    	$this->db->set('url', $data['ruta']);
    	$this->db->set('usuario_modificacion', $data['usuario_modificacion']);
    	$this->db->set('fecha_modificacion', $data['fecha_modificacion']);
    	$this->db->set('ip', $data['ip']);
    	$this->db->where('id_opciones_sistema', $data['id']);
    	$this->db->update('opciones_sistema');
    }

    function delete($id) {
    	$this->db->where('id_opciones_sistema', $id);
    	$this->db->delete('opciones_sistema');
    }
    
    /**
     * Método que nos devuelve todas las opciones del sistema y el id_perfil.
     * @author Andrés Guizado Díaz
     */
    
    function getOpcPerfil(){    	
    	$query = $this->db->query('SELECT A.id_opciones_sistema AS id, nombre, id_perfil, B.id_estado AS estado
    	FROM opciones_sistema A
    	LEFT JOIN opciones_sistema_perfil B ON A.id_opciones_sistema = B.id_opciones_sistema
    	WHERE A.id_estado = 2 AND
    	A.id_padre IS NOT NULL
    	ORDER BY nombre ASC');
    	return $query->result();
    }
    
    function updateOpcionInactivo($data) {
    	foreach($data['opcion'] as $o) {
    		$this->db->set('usuario_modificacion', $data['usuario_accion']);
    		$this->db->set('fecha_modificacion', date('Y-m-d H:i:s'));
    		$this->db->set('id_estado', INT_ESTADO_INACTIVO);
    		$this->db->where('id_perfil', $data['id_perfil']);
    		$this->db->where('id_opciones_sistema !=',$o);    		
    		$this->db->update('opciones_sistema_perfil');
    	}
    }
    
    function checkOpcion($data, $o){
    	$this->db->select('id_opciones_sistema');
    	$this->db->from('opciones_sistema_perfil');
    	$this->db->where('id_perfil',$data['id_perfil']);
    	$this->db->where('id_opciones_sistema',$o);
    	$query = $this->db->get();
    	return $query->result();
    }
    
	function insertOpcion($data, $d){
		$this->db->set('id_opciones_sistema', $d);
		$this->db->set('id_perfil', $data['id_perfil']);
		$this->db->set('usuario_registro', $data['usuario_accion']);
		$this->db->set('fecha_registro', date('Y-m-d H:i:s'));
		$this->db->set('id_estado', INT_ESTADO_ACTIVO);
		$this->db->insert('opciones_sistema_perfil');
	}
	
	function updateOpcion($data, $d) {
		$this->db->set('usuario_modificacion', $data['usuario_accion']);
		$this->db->set('fecha_modificacion', date('Y-m-d H:i:s'));
		$this->db->set('id_estado', INT_ESTADO_ACTIVO);
		$this->db->where('id_opciones_sistema', $d);
		$this->db->update('opciones_sistema_perfil');
	}
    
}